La transition de tableaux C-style vers std::array représente un changement fondamental vers sécurité des types et programmation générique dans le C++ moderne.
1. Le problème de la dégradation des pointeurs
Tableaux hérités (int arr[N]) souffrent de "dégradation du pointeur". Lorsqu'ils sont passés à des fonctions, ils perdent leurs métadonnées de taille et se transforment en pointeur brut (int*). Cela entraîne des opérations arithmétiques de pointeurs non sécurisées et des dépassements de tampon.
2. La modernisation avec C++11
std::array fournit un wrapper mince, wrapper sans surcharge autour des tableaux bruts. Il s'intègre à la STL (Bibliothèque standard de modèles) tout en respectant la règle des cinq.
3. Transmission parfaite avec std::forward
Le C++11 a introduit std::forward afin d'assurer std::array les objets se déplacent à travers les enveloppes de modèles sans copies redondantes. En exploitant règles de fusion des références, nous préservons la catégorie de valeur de l'objet (lvalue contre rvalue).
$$T\&\& + \& \rightarrow T\&$$